package com.zto.sch.base.normal;

import org.junit.Test;

import java.math.BigDecimal;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @program: sch-diy-parent
 * @description:
 * @author: sch
 * @create: 2021-04-26 11:03
 **/
public class BigDecimalTest {
//    public static void main(String[] args) {
//        BigDecimal b1 = new BigDecimal(22);
//        BigDecimal b2 = new BigDecimal(20);
//        System.out.println(b1.equals(b2));
//    }

    public static void main(String[] args) {
//        for (int i = 0; i <10 ; i++) {
//            for (int j = 0; j <10 ; j++) {
//                System.out.println(i+"---"+j);
//                break;
//            }
//        }
//        BigDecimal total = new BigDecimal(0);
//        for (int i = 0; i < 10; i++) {
//            total = total.add(new BigDecimal(i));
//        }
//        System.out.println(total);
        Long b = 1111L, c = 7777L;
        String format = String.format("%d-%d", b, c);

        System.out.println(format);
    }

    @Test
    public void test1() {
//        BigDecimal b1 = new BigDecimal(1.35);
//        BigDecimal b2 = new BigDecimal(-1.35);
//        System.out.println(b1.setScale(0, BigDecimal.ROUND_DOWN));
//        System.out.println(b2.abs().setScale(0, BigDecimal.ROUND_CEILING).negate());
//
//        BigDecimal b3 = new BigDecimal(-65.60);
//        BigDecimal bigDecimal = b3.abs().setScale(0, BigDecimal.ROUND_DOWN);
//        System.out.println(b3.subtract(bigDecimal).negate());

        BigDecimal b4 = new BigDecimal(-2.8);
        BigDecimal b5 = new BigDecimal(-2.8);

        BigDecimal bigDecimal1 = b4.abs().setScale(0, BigDecimal.ROUND_DOWN);
        System.out.println(b4.add(bigDecimal1));

        BigDecimal bigDecimal2 = b5.abs().setScale(0, BigDecimal.ROUND_DOWN);
        System.out.println(b5.add(bigDecimal2).negate());
    }

    @Test
    public void test2() {
        List<BigDecimal> list = getBigDecimalList();

        BigDecimal reduce = list.stream().map(t -> {
            BigDecimal bigDecimal = t.abs().setScale(0, BigDecimal.ROUND_DOWN);
            return t.subtract(bigDecimal);
        }).reduce(BigDecimal.ZERO, BigDecimal::add);
        System.out.println(reduce);
    }

    @Test
    public void test3() {
        BigDecimal b4 = new BigDecimal(552);
        BigDecimal b5 = new BigDecimal(52);
        BigDecimal resultBigDecimal = b4.setScale(2).subtract(b5.setScale(2)).divide(new BigDecimal(500));
        if (new BigDecimal(resultBigDecimal.intValue()).compareTo(resultBigDecimal) == 0) {
            System.out.println("ok");
        }

        if (true) {
            System.out.println("-----hello------");
        }
        System.out.println("over");
    }

    private List<BigDecimal> getBigDecimalList() {
        return Stream.of(new BigDecimal(8.2), new BigDecimal(20.2), new BigDecimal(25.1), new BigDecimal(18.5)).collect(Collectors.toList());
    }

}
